package com.ruoyi.service.basic.impl;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.domain.basic.MesBom;
import com.ruoyi.mapper.basic.MesBomMapper;
import com.ruoyi.service.basic.IMesBomService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * BOM主表Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
@Service
public class MesBomServiceImpl implements IMesBomService 
{
    @Autowired
    private MesBomMapper mesBomMapper;

    /**
     * 查询BOM主表
     * 
     * @param bomId BOM主表主键
     * @return BOM主表
     */
    @Override
    public MesBom selectMesBomByBomId(Long bomId)
    {
        return mesBomMapper.selectMesBomByBomId(bomId);
    }

    /**
     * 查询BOM主表列表
     * 
     * @param mesBom BOM主表
     * @return BOM主表
     */
    @Override
    public List<MesBom> selectMesBomList(MesBom mesBom)
    {
        return mesBomMapper.selectMesBomList(mesBom);
    }

    /**
     * 新增BOM主表
     * 
     * @param mesBom BOM主表
     * @return 结果
     */
    @Override
    public int insertMesBom(MesBom mesBom)
    {
        mesBom.setCreateTime(DateUtils.getNowDate());
        return mesBomMapper.insertMesBom(mesBom);
    }

    /**
     * 修改BOM主表
     * 
     * @param mesBom BOM主表
     * @return 结果
     */
    @Override
    public int updateMesBom(MesBom mesBom)
    {
        mesBom.setUpdateTime(DateUtils.getNowDate());
        return mesBomMapper.updateMesBom(mesBom);
    }

    /**
     * 批量删除BOM主表
     * 
     * @param bomIds 需要删除的BOM主表主键
     * @return 结果
     */
    @Override
    public int deleteMesBomByBomIds(Long[] bomIds)
    {
        return mesBomMapper.deleteMesBomByBomIds(bomIds);
    }

    /**
     * 删除BOM主表信息
     * 
     * @param bomId BOM主表主键
     * @return 结果
     */
    @Override
    public int deleteMesBomByBomId(Long bomId)
    {
        return mesBomMapper.deleteMesBomByBomId(bomId);
    }

    /**
     * 校验BOM编码是否唯一
     * 
     * @param mesBom BOM信息
     * @return 结果
     */
    @Override
    public String checkBomCodeUnique(MesBom mesBom)
    {
        Long bomId = StringUtils.isNull(mesBom.getBomId()) ? -1L : mesBom.getBomId();
        MesBom info = mesBomMapper.checkBomCodeUnique(mesBom.getBomCode());
        if (StringUtils.isNotNull(info) && info.getBomId().longValue() != bomId.longValue())
        {
            return "1"; // 不唯一
        }
        return "0"; // 唯一
    }

    /**
     * 根据产品编码查询BOM
     * 
     * @param productCode 产品编码
     * @return BOM列表
     */
    @Override
    public List<MesBom> selectMesBomByProductCode(String productCode)
    {
        return mesBomMapper.selectMesBomByProductCode(productCode);
    }
}